AWS Backupのボールト名「Default」の自動作成条件を確認し、SCPによる自動作成防止設定をしてみた
はじめに
AWS Backup のボールトページに遷移すると、「Default」という名前のボールトが表示されることがあります。
これは、AWS のドキュメントにも記載されているように、AWS Backup を初めて利用する際に自動的に作成されるものです。
When you first use the Backup Vaults page of the AWS Backup console in an AWS Region, the console automatically creates a default vault for the Region.
However, if you use AWS Backup through the AWS CLI, AWS SDK, or AWS CloudFormation, a default vault is not created. You must create your own vault.
https://docs.aws.amazon.com/ja_jp/aws-backup/latest/devguide/create-a-vault.html
日本語訳)AWS Backup コンソールの Backup Vaults ページを特定の AWS リージョンで初めて使用する場合、コンソールは自動的にそのリージョン用のデフォルトボールトを作成します。
ただし、AWS CLI、AWS SDK、または AWS CloudFormation を使用して AWS Backup を利用する場合は、デフォルトボールトは作成されません。その場合、自分でボールトを作成する必要があります。
しかし、以下の2点については詳細が不明確だったため、本記事で解説します。
- デフォルトボールトが自動作成される具体的な条件
- デフォルトボールトの自動作成を防ぐ方法
作成条件
結論を先に述べると、デフォルトボールトが作成される条件は以下の2つです。
- ボールトを作成していない状況で、AWS マネジメントコンソールの AWS Backup ページに遷移すること
- ユーザーが
backup:CreateBackupVault
の権限を持っていること
これら両方の条件が満たされた場合に、「Default」という名前のボールトが自動的に作成されます。
実際に試してみます。
以下のコマンドで、デフォルトボールトが存在しない状態から検証を行いました。
$ aws backup list-backup-vaults --region us-east-1
{
"BackupVaultList": []
}
まず、ReadOnlyAccess
権限を持つユーザーで AWS Backup ページに遷移しました。この場合、デフォルトボールトは作成されませんでした。
AWS Backupページ
次に、AdministratorAccess
権限を持つユーザーで AWS Backup ページに遷移しました。この場合、デフォルトボールトが作成されていることが確認できました。さらに、ボールトの作成日時がページ遷移のタイミングと一致していることも確認しました。
また、CloudTrail のログを確認すると、イベント名 CreateBackupVault
が記録されており、Defaultボールトの作成を確認することができます。
Defaultを削除するには
Defaultボールトを削除しようとする場合、AWS マネジメントコンソール上では削除ボタンが表示されないため、コンソールからの削除はできません。
削除ボタンあり
削除ボタンなし
さらに、AWS CLI を使用してデフォルトボールトを削除しても、backup:CreateBackupVault
の権限を持っているユーザーが、AWS Backup のボールトページに遷移すると、再作成されてしまいます。
$ aws backup delete-backup-vault --backup-vault-name Default --region us-east-1
デフォルトボールトを削除する一つの方法として、以下の手順があります。
- 同じリージョンに別のボールトを作成する
- AWS CLI を使用してデフォルトボールトを削除する
この方法を用いると、デフォルトボールトは再作成されません。以下の通りコマンドを実行します。
$ aws backup create-backup-vault --backup-vault-name test --region us-east-1
$ aws backup delete-backup-vault --backup-vault-name Default --region us-east-1
Defaultボールトは削除されました。
ただし、注意点として、作成した別のボールトを削除した後に、backup:CreateBackupVault
の権限を持っているユーザーがAWS Backup ページに再度遷移すると、デフォルトボールトが再び自動作成されてしまいます。
$ aws backup create-backup-vault --backup-vault-name test --region us-east-1
デフォルトボールトが作成される
SCPで制限
空のバックアップボールト自体には料金は発生しませんが、デフォルトボールトが不要と考える利用者も多いでしょう。
そこで、AWS Organizationsを利用中の場合、Service Control Policy (SCP) を使用して、管理アカウントやメンバーアカウントでデフォルトボールトが自動作成されないようにする方法を紹介します。以下のポリシーを組織内のRootOUに適用することで、この制限を実現できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "backup:CreateBackupVault",
"Resource": "arn:aws:backup:*:*:backup-vault:Default"
}
]
}
このSCPをデフォルトボールトが既に存在するアカウントに適用した後、AWS CloudShell を使用してデフォルトボールトを削除すると、ボールトは再作成されなくなります。具体的には以下のコマンドを使用します。
$ aws backup delete-backup-vault --backup-vault-name Default --region us-east-1
参考